package RRHH_MODELO;
import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class RHH_DATOS{
	private int ID;
	private String DESCRIPCION;
	private int TIPO;//0Datos, 1Documentos
	private int ESTADO_CADUCIDAD;//0Activo, 1Inactivo
	private int ID_CATEGORIA_DATO;//0Activo, 1Inactivo
	private Conexion con = null;

	public RHH_DATOS(Conexion con){
            this.con=con;
        }

	public RHH_DATOS(int TIPO,String DESCRIPCION,int ID, int ESTADO_CADUCIDAD, int ID_CATEGORIA_DATO){
		this.TIPO =TIPO;
		this.DESCRIPCION =DESCRIPCION;
		this.ID =ID;
                this.ESTADO_CADUCIDAD=ESTADO_CADUCIDAD;
                this.ID_CATEGORIA_DATO=ID_CATEGORIA_DATO;
	}

	public int Insertar() throws SQLException{
            String consulta = "insert into BROKER.RHH_DATOS(TIPO,DESCRIPCION,ID, ESTADO_CADUCIDAD, ID_CATEGORIA_DATO) VALUES ("+TIPO+",'"+DESCRIPCION+"',"+ID+", "+ESTADO_CADUCIDAD+", "+ID_CATEGORIA_DATO+")";
            con.EjecutarSentencia(consulta);
            consulta = "select BROKER.RHH_DATOS_SEQ.currval as ID from dual";
            ResultSet rs = con.EjecutarConsulta(consulta);
            rs.next();
            return rs.getInt("ID");
	}

	public boolean EliminarXid() throws SQLException{
            String consulta = "delete from BROKER.RHH_DATOS where ID = "+getID();
            con.EjecutarSentencia(consulta);
            return true;
	}
	public boolean EliminarXid(int id) throws SQLException{
            String consulta = "delete from BROKER.RHH_DATOS where ID = "+id;
            con.EjecutarSentencia(consulta);
            return true;
	}

	public RHH_DATOS BuscarXid(int id) throws SQLException{
            String consulta = "select * from BROKER.RHH_DATOS where ID = "+id;
            ResultSet rs = con.EjecutarConsulta(consulta);            
            List<RHH_DATOS> lista = Cargar(rs);
            if(lista.size()>0)
                return lista.get(0);
            else
                return null;
	}

	public List<RHH_DATOS> TodosDatos() throws SQLException{
            String consulta = "select * from BROKER.RHH_DATOS where TIPO =0";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
	}
        
	public List<RHH_DATOS> TodosDocs() throws SQLException{
            String consulta = "select * from BROKER.RHH_DATOS where TIPO =1";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
	}

        public List<RHH_DATOS> TodosXNotinPERSONA(int id_persona, int idcategoria) throws SQLException {
        String consulta = "select * from BROKER.RHH_DATOS d\n" +
                            "where d.ID not in\n" +
                            "(SELECT RHH_PERSONA_DATOS.ID_DATOS  \n" +
                            "FROM BROKER.RHH_PERSONA_DATOS, BROKER.RHH_PERSONA, BROKER.RHH_DATOS\n" +
                            "WHERE     (RHH_PERSONA_DATOS.ID_PERSONA = RHH_PERSONA.ID)\n" +
                            "AND (RHH_PERSONA_DATOS.ID_DATOS = RHH_DATOS.ID)\n" +
                            "AND (RHH_PERSONA.ID ="+id_persona+"))\n" +
                            "AND d.ID_CATEGORIA_DATO = "+idcategoria;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }

        
	public List<RHH_DATOS> Cargar(ResultSet rs) throws SQLException{
            List<RHH_DATOS> lista = new ArrayList<RHH_DATOS>();
            while(rs.next()){
                    RHH_DATOS objeto = new RHH_DATOS(con);
                    objeto.setID(rs.getInt("ID"));
                    objeto.setDESCRIPCION(rs.getString("DESCRIPCION"));
                    objeto.setTIPO(rs.getInt("TIPO"));
                    objeto.setESTADO_CADUCIDAD(rs.getInt("ESTADO_CADUCIDAD"));
                    objeto.setID_CATEGORIA_DATO(rs.getInt("ID_CATEGORIA_DATO"));
                    lista.add(objeto);
            }
            return lista;
	}

	public int getID(){
		return ID;
	}
	public void setID(int ID){
		this.ID=ID;
	}

	public String getDESCRIPCION(){
		return DESCRIPCION;
	}
	public void setDESCRIPCION(String DESCRIPCION){
		this.DESCRIPCION=DESCRIPCION;
	}

	public int getTIPO(){
		return TIPO;
	}
	public void setTIPO(int TIPO){
		this.TIPO=TIPO;
	}

	public Conexion getCon() {
		return con;
	}
	public void setCon(Conexion con) {
		this.con = con;
	}

    public int getESTADO_CADUCIDAD() {
        return ESTADO_CADUCIDAD;
    }

    public void setESTADO_CADUCIDAD(int ESTADO_CADUCIDAD) {
        this.ESTADO_CADUCIDAD = ESTADO_CADUCIDAD;
    }

    public int getID_CATEGORIA_DATO() {
        return ID_CATEGORIA_DATO;
    }

    public void setID_CATEGORIA_DATO(int ID_CATEGORIA_DATO) {
        this.ID_CATEGORIA_DATO = ID_CATEGORIA_DATO;
    }
                
    
}
